import 'package:flutter/material.dart';
import 'package:intl/intl.dart';

class TimeUtil {
  static final DateTime _dateTime = DateTime.now();

  TimeUtil._();

  /// 格式化一个[DateTime]对象，将其转换为后端所需的字符串格式。
  ///
  /// ```dart
  /// 示例：
  /// formatTimeToBackend(DateTime.now()) // 返回类似 "2022-09-30T15:45:23.345Z" 的格式化字符串
  /// ```
  ///
  /// @param time 要格式化的[DateTime]实例。
  /// @return 一个符合 'yyyy-MM-ddTHH:mm:ss.SSSZ' 格式的格式化时间字符串。
  static String formatTimeToBackend(DateTime time) {
    return DateFormat('yyyy-MM-ddTHH:mm:ss.SSS' 'Z').format(time);
  }

  static Duration getTimeZoneOffsetDuration() {
    return _dateTime.timeZoneOffset;
  }

  static bool beforeNow(DateTime dateTime) {
    return DateTime.now().isAfter(dateTime);
  }

  static String formatTimeForHuman(
      DateTime? time, BuildContext context, String defaultValue) {
    if (time == null) {
      return defaultValue;
    }
    final dateFormat =
        DateFormat('M月d日 E', Localizations.localeOf(context).languageCode);
    return dateFormat.format(time);
  }
}
